
#pragma once

#include "ICond.h"

class CondF : public ICond
{
public:
	CondF();
	~CondF();
//////////////////////////// ICond //////////////////////////////////////////////
	virtual int8_t getCondType() { return (int8_t)EDupCondType::EDupCondType_F; };
	virtual bool init(IDuplicate *pDuplicate, const VEC_INT32 *pCond, const string &strSubCond);
	virtual void uninit();
	virtual void condUpdate();
	virtual bool finishCond();
	virtual int32_t result();
	virtual uint32_t transAreeId();
	virtual void onTransNum(uint32_t monsId, uint32_t num ,int8_t parentType);
private:
	int32_t getTransNum(uint32_t monsId);
	int32_t getTransExcept(SET_UINT32 &setExcept);
	int32_t checkCond();
	void notifyTransNum();
private:
	IDuplicate *m_pDuplicate;
	const VEC_INT32 *m_pVecCond;
	int32_t m_result;
	bool m_finish;
	uint32_t m_transArea;
	int32_t m_targetNum;
	int32_t m_transNum;
	MAP_UINT32_INT32 m_mapBossTrans;
	SET_INT32 m_setType;
};